var factory = argument0;
var attacker = argument1;
var angle = argument2;

var thisAttack = instance_create(0, 0, obj_Attack);
thisAttack.sprite_index = factory.spriteID;
thisAttack.mask_index = factory.maskID;
thisAttack.effects = factory.effects;
thisAttack.tickListeners = factory.tickListeners;
thisAttack.attacker = attacker;

thisAttack.image_angle = radtodeg(-angle); //deal with inverted y axis
thisAttack.x = attacker.x + attacker.sprite_width / 2;
thisAttack.y = attacker.y + attacker.sprite_height / 2;
return thisAttack;
